package com.modifiertech.lineage.api;

import com.modifiertech.lineage.base.ConfigHandler;

import java.math.BigDecimal;

public class PlayerDataLevelTag {
    private long currentLevel=1L;
    private long currentExp=0L;
    private long currentMaxExp=new BigDecimal((currentLevel* ConfigHandler.expMinLevel*(1+ConfigHandler.expIncrese))).longValue();

    public long getCurrentLevel() {
        return currentLevel;
    }

    public void setCurrentLevel(long currentLevel) {
        this.currentLevel = currentLevel;
    }

    public long getCurrentExp() {
        return currentExp;
    }

    public void setCurrentExp(long currentExp) {
        this.currentExp = currentExp;
    }

    public long getCurrentMaxExp() {
        return currentMaxExp;
    }

    public void setCurrentMaxExp(long currentMaxExp) {
        this.currentMaxExp = currentMaxExp;
    }

    /**更新最大经验
     *
     */
    public void updateMaxExp(){
        this.currentMaxExp=getLevelMaxExp(currentLevel);
    }

    /**获取指定等级的最大经验
     *
     * @param level
     * @return
     */
    public static long getLevelMaxExp(long level){
        //1.0版本线性公式
//        return new BigDecimal((level* ConfigHandler.expMinLevel*(1+ConfigHandler.expIncrese))).longValue();
        // 使用多项式增长公式，n 的值可以是 1.5 或 2
        double n = ConfigHandler.expIncrese;  // 控制增长的曲线，值越大，后期升级越慢
        return (long) (ConfigHandler.expMinLevel * Math.pow(level, n));
    }


}
